package com.dai.spec.gxk.vo;

import com.dai.spec.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class StudentScoreVO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private Long id;
    /**
     * 学号
     */
    @Excel(name = "学号")
    private String studentNumber;

    /**
     * 姓名
     */
    @Excel(name = "姓名")
    private String name;


    /**
     * 课程名称
     */
    @Excel(name = "课程名称")
    private String courseName;
    /**
     * 学生专业
     */
    @Excel(name = "专业")
    private String speciality;


    /**
     * 课程类型
     * ‘0’ 社会科学类
     * ‘1’ 自然科学类
     * ‘2’ 文学艺术类
     * ‘4’ 创新创业类
     */
    @Excel(name = "课程类型")
    private String type;


    /**
     * 开课类型
     * ‘0’ 线上
     * ‘1’ 线下
     */
    @Excel(name = "开课类型")
    private String deliveryType;

    /**
     * 成绩
     */
    @Excel(name = "成绩")
    private Long score;
    /**
     * 课程描述
     */
    @NotNull(message = "课程描述不能为空")
    private String description;

    /**
     * 开课院系
     */
    @Excel(name = "开课院系")
    @NotNull(message = "开课院系不能为空")
    private String department;

    /**
     * 课程周期
     * ‘0’ 8周，
     * ‘1’ 16周
     */
    @Excel(name = "课程周期")
    @NotNull(message = "课程周期不能为空")
    private String courseCycle;

    /**
     * 开课时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startTime;

    /**
     * 上课地点
     */
    @Excel(name = "上课地点")
    private String location;

    /**
     * 课程学分
     */
    @Excel(name = "课程学分")
    @NotNull
    @Range(min = 1, max = 3, message = "学分必须在1-3之间")
    private BigDecimal credits;
}
